package arithmetic2.day03;

import java.util.PriorityQueue;

/*
    已知一个接近有序的数组(所有元素在排好序之后离本来的位置距离不超过K，k相对数组长度来说很小)
    使用最有效的排序算法将数组排好序
    可以使用小根堆，将前k+1个数变为小根堆，将最小的元素放入数组的第一个位置，然后将第k+2个数与最小的那个数交换重复这个过程
    优先级队列就是一个堆结构（默认为小根堆）
 */
public class Demo02 {
    public static void main(String[] args) {
        PriorityQueue<Integer> queue = new PriorityQueue<>();
        queue.add(8);
        queue.add(4);
        queue.add(4);
        queue.add(7);
        queue.add(5);
        queue.add(10);
        while (!queue.isEmpty()){
            System.out.println(queue.poll());
        }
    }
}
